
<html><HEAD>
<LINK REL=STYLESHEET HREF="default.css" TYPE="text/css">
<TITLE>
Features supported by the I10 interface</TITLE>
</HEAD>
<BODY>

<!-- Header -->
<p class="ancestor" align="right"><A HREF="connpbp47.htm">Previous</A>&nbsp;&nbsp;<A HREF="connpbp49.htm" >Next</A>
<!-- End Header -->
<A NAME="BABGCHGE"></A><h1>Features supported by the I10 interface</h1>
<A NAME="TI955"></A><p>The I10 interface supports several features that are not available
when you use the IN9 interface. Some of these features require a
specific version of the Informix Dynamic Server database.</p>
<A NAME="TI956"></A><h2>Accessing Unicode data</h2>
<A NAME="TI957"></A><p>PowerBuilder can connect, save, and retrieve data in ANSI/DBCS
databases using the IN9 interface, but the IN9 interface does not
support Unicode databases. The Informix I10 interface supports ANSI/DBCS
and Unicode databases. </p>
<A NAME="TI958"></A><p>The I10 native interface uses the Informix GLS (Global Language
Support) API for global language support. The native interface uses
three DBParms to help you set up the locale used in the current
connection:<A NAME="TI959"></A>
<ul>
<li class=fi><A HREF="connpbp48.htm#BABEIDCH">Client_Locale</A></li>
<li class=ds><A HREF="connpbp48.htm#BABCFECA">DB_Locale</A></li>
<li class=ds><A HREF="connpbp48.htm#BABIDDAG">StrByCharset</A>
</li>
</ul>
</p>
<A NAME="TI960"></A><p>These parameters are available on the Regional Settings tab
page in the Database Profile Setup dialog box. </p>
<A NAME="BABEIDCH"></A><h4>Client_Locale</h4>
<A NAME="TI961"></A><p>    Client_Locale specifies the value of the
Informix environment variable CLIENT_LOCALE. The format
is <i>language_territory</i>.<i>codeset</i>.
For example: <p><PRE> Client_Locale='en_us.1252'<br>Client_Locale='en_us.utf8'</PRE></p>
<A NAME="TI962"></A><p>The I10 interface uses this setting to access string data
in an Informix database and to process SQL statements. If you do
not set the DBParm, the default locale value is based on the
OS locale. </p>
<A NAME="BABCFECA"></A><h4>DB_Locale</h4>
<A NAME="TI963"></A><p>DB_Locale specifies the value of the Informix environment
variable DB_LOCALE. The format is <i>language_territory</i>.<i>codeset</i>.
For example:<p><PRE> DB_Locale='en_us.1252'<br>DB_Locale='en_us.utf8'</PRE></p>
<A NAME="TI964"></A><p>DB_LOCALE specifies the language, territory, and
code set that the database server needs to correctly interpret locale-sensitive
datatypes such as <b>NChar</b> and <b>NVarChar</b> in
a specific database. The code set specified in DB_LOCALE determines
which characters are valid in any character column, as well as in
the names of database objects such as databases, tables, columns,
and views. If you do not set the DBParm, the I10 interface assumes
that the DB_LOCALE value is the same as the CLIENT_LOCALE
value.</p>
<A NAME="TI965"></A><p>You can set the CLIENT_LOCALE and DB_LOCALE
environment variables directly using the Informix Setnet32 utility,
available in the Utilities folder for the Informix database interfaces
in the Objects view in the Database painter or the Database Profiles
dialog box. </p>
<A NAME="TI966"></A><p>For more information about the Informix CLIENT_LOCALE
and DB_LOCALE environment variables, see the <i>IBM
Informix GLS User's Guide</i>
, currently available
at the <A HREF="http://publib.boulder.ibm.com/epubs/pdf/25122820.pdf">Informix library Web site</A>
.</p>
<A NAME="BABIDDAG"></A><h4>StrByCharset</h4>
<A NAME="TI967"></A><p>The StrByCharset DBParm specifies how to convert string
data between PowerBuilder Unicode strings and Informix client multibyte
strings. By default, string conversion for UTF-8 code sets is based
on the UTF-8 code set, and string conversion for non-UTF-8 code
sets is based on the current OS code page. If StrByCharset is set
to 1 (true), string conversion is based on the code set specified
in the DBParm Client_Locale.</p>
<A NAME="TI968"></A><h2>Assigning an owner to the PowerBuilder catalog tables</h2>
<A NAME="TI969"></A><p>When you use the I10 interface, you can use the PBCatalogOwner DBParm on the
System tab page to assign a nondefault owner to the extended attribute system
tables. For ANSI-compliant databases, the owner name that
you specify must be unique but the table name does not have to be
unique. You can create multiple sets of catalog tables prefaced
with different user names. However, if the database is not ANSI-compliant,
the table name must be unique, so that only one set of catalog tables
can be created with an assigned owner name.</p>
<A NAME="TI970"></A><h2>Support for long object names</h2>
<A NAME="TI971"></A><p>The     I10 interface supports Informix long object
names with up to 128 characters.</p>
<A NAME="TI972"></A><h2>Renaming an index</h2>
<A NAME="TI973"></A><p>With IDS 9.2.1 and later, you can change the name of an index
in the Database painter when you are connected using the I10 interface.
The I10 interface uses the IDS RENAME INDEX statement to change
the name of the index. You need only drop and recreate the index
if you want to make other changes.</p>
<A NAME="TI974"></A><h2>SQL statement caching</h2>
<A NAME="TI975"></A><p>In IDS 9.2.1 and later, the database server uses the <ACRONYM title = "sequel" >SQL</ACRONYM> statement cache (SSC) to store <ACRONYM title = "sequel" >SQL</ACRONYM> statements across user sessions.
When any user executes a statement already stored in the <ACRONYM title = "sequel" >SQL</ACRONYM> statement cache, the database
server does not parse and optimize the statement again, resulting
in improved performance. The statement must be a <b>SELECT</b>, <b>UPDATE</b>, <b>DELETE</b>,
or <b>INSERT</b> statement, and it cannot contain user-defined
routines.</p>
<A NAME="TI976"></A><p>There are several ways to configure caching on the server.
The <b>SET</b> <b>STATEMENT</b> <b>CACHE</b> statement
takes precedence over the STMT_CACHE environment variable
and the STMT_CACHE configuration parameter. You must enable
the <ACRONYM title = "sequel" >SQL</ACRONYM> statement cache, either
by setting the STMT_CACHE configuration parameter or by
using the Informix <b>onmode</b> utility, <i>before</i> the <b>SET
STATEMENT CACHE</b> statement can execute successfully.</p>
<A NAME="TI977"></A><p>You can set the StmtCache DBParm on the System tab page
in the Database Profile Setup dialog box for I10 connections to
turn <ACRONYM title = "sequel" >SQL</ACRONYM> statement caching on or
off on the client. However, the server must be configured to support <ACRONYM title = "sequel" >SQL</ACRONYM> statement caching before you
can access the cache from the client.</p>
<A NAME="TI978"></A><p>For more information about Informix <ACRONYM title = "sequel" >SQL</ACRONYM> statement
caching, see the <A HREF="http://publib.boulder.ibm.com/epubs/pdf/25122960.pdf">IBM Informix Dynamic Server Performance Guide</A>
.</p>
<A NAME="TI979"></A><h2>Creating and dropping indexes without locking</h2>
<A NAME="TI980"></A><p>In IDS 10.0 and later, the <ACRONYM title = "sequel" >SQL</ACRONYM> syntax
of <b>CREATE INDEX</b> and <b>DROP INDEX</b> supports
the <b>ONLINE</b> keyword to create or drop an index
in an online environment where the database and its tables are continuously
available. When you use the <b>ONLINE</b> keyword to
create or drop an index, data definition language (DDL) operations
execute without applying an exclusive lock on the table on which
the specified index is defined. </p>
<A NAME="TI981"></A><p>If you use <b>CREATE INDEX ONLINE</b> to create
an index on a table that other users are accessing, the index is
not available until no users are updating the table. </p>
<A NAME="TI982"></A><p>If you issue <b>DROP INDEX ONLINE</b> to drop
an index, no users can reference the index, but concurrent data
manipulation language (DML) operations can use the index until the
operations terminate. Dropping the index is deferred until no users
are using the index. </p>
<A NAME="TI983"></A><p>You can set the OnlineIndex static DBParm on the System
tab page in the Database Profile Setup dialog box for I10 connections
to specify that the Database painter should use the <b>ONLINE</b> keyword
when you create or drop an index.</p>
<p><img src="images/note.gif" width=17 height=17 border=0 align="bottom" alt="Note"> <span class=shaded>Clustered index not supported</span> <A NAME="TI984"></A>You cannot create a clustered index using online mode because
it is not supported by IDS.</p>
<A NAME="TI985"></A><h2>Column-level encryption</h2>
<A NAME="TI986"></A><p>In IDS 10.0 and later, the <ACRONYM title = "sequel" >SQL</ACRONYM> statement <b>SET
ENCRYPTION PASSWORD</b> can improve the confidentiality of
data and support data integrity by defining or resetting a password
for encryption and decryption of data at the column level. </p>
<A NAME="TI987"></A><p>You can set the EncryptionPass and Hint static DBParms
on the System tab page in the Database Profile Setup dialog box
for I10 connections to specify a password and a hint to help you
remember the password. The application uses built-in Informix functions
to encrypt and decrypt character data.</p>
<A NAME="TI988"></A><h2>Using multiple OUT parameters in user-defined routines</h2>
<A NAME="TI989"></A><p>In a user-defined routine (UDR), an OUT parameter corresponds
to a value returned through a pointer. Before IDS version 9.4, IDS
supported no more than one OUT parameter in a UDR, and any OUT parameter
was required to appear as the last item in the parameter list. IDS
version 9.4 drops these restrictions, supporting multiple OUT parameters
anywhere in the parameter list of the UDR. This feature is available
when you use the I10 interface. It provides greater flexibility
in defining UDRs, and removes the need to return collection variables
in contexts where multiple returned values are required. </p>
<A NAME="TI990"></A><p>To return OUT parameters from a UDR, you must use statement
local variables (SLVs). </p>
<A NAME="TI991"></A><p>In the following statement, the OUT parameter in the UDR <b>myfunc</b> is
defined using the SLV syntax <i>slvname</i><b>#</b><i>out_param_type</i>. <p><PRE> SELECT sales FROM mytable WHERE myfunc(10, sales#money) &lt; 1000</PRE></p>
<A NAME="TI992"></A><p>Informix does not support invoking a UDR with OUT parameters
using an <b>EXECUTE</b> statement, therefore multiple
OUT parameters are not supported in PowerBuilder remote procedure
calls and embedded <ACRONYM title = "sequel" >SQL</ACRONYM> <b>EXECUTE</b> <b>PROCEDURE</b> commands. </p>

